/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package algoritmosgenetico;

/**
 *
 * @author Gustavo Bula
 */
public class AGUFLP {
    
    public static void main(String[] args) {
        String nombre="problemas/cap101.txt";
        ProblemReader pr = new ProblemReader(nombre);
        Poblacion poblacionInicial=new Poblacion(100,pr.getWhNumber());
        poblacionInicial.calculosPoblacion(nombre);
        poblacionInicial.imprimir();
        Poblacion pobfinal = new Poblacion(poblacionInicial.getIndividuos());
        pobfinal.calculosPoblacion(nombre);
        int[] min = poblacionInicial.getMejorIndividuo();
        double cm = poblacionInicial.getMinimo();
        int ngen = 500;
        int j=0;
        while (j < ngen) {
            j = j + 1;
            int[][] pf = (new OperadoresGeneticos(poblacionInicial,0.01)).getPobFinal();
            pobfinal = new Poblacion(pf);
            pobfinal.calculosPoblacion(nombre);           
            double minj = pobfinal.getMinimo();
            if (minj < cm) {
                j = 0;
                cm = minj;
                 System.arraycopy(pobfinal.getMejorIndividuo(), 0, min, 0, pobfinal.getMejorIndividuo().length);
            }
            poblacionInicial = new Poblacion(pobfinal.getIndividuos());
            poblacionInicial.calculosPoblacion(nombre);
            System.out.println((j+1)+" "+poblacionInicial.getFitnessMedio());
        }
        System.out.println(cm);
        for (int i = 0; i < min.length; ++i) {
            System.out.print(min[i] + " ");
        }
        System.out.println("");
        
    }
    
}
